package com.macro.mall.model.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.util.List;

/**
 * 担保支付订单查询响应DTO
 */
@Data
public class XhsGpayOrderQueryResponse {
    private Boolean success;
    private String msg;
    private Integer code;
    private OrderData data;

    @Data
    public static class OrderData {
        @JsonProperty("order_id")
        private String orderId;          // 小红书订单ID

        @JsonProperty("pay_amount")
        private Long payAmount;          // 支付金额(分)

        @JsonProperty("order_status")
        private Integer orderStatus;     // 订单状态

        @JsonProperty("voucher_infos")
        private List<VoucherInfo> voucherInfos;   // 凭证明细

        @JsonProperty("book_details")
        private List<BookDetail> bookDetails;     // 预约明细

        @JsonProperty("product_infos")
        private List<ProductInfo> productInfos;   // 商品明细

        @JsonProperty("third_trade_no")
        private String thirdTradeNo;    // 支付单号

        @JsonProperty("pay_channel")
        private Integer payChannel;      // 支付渠道
    }

    @Data
    public static class VoucherInfo {
        @JsonProperty("voucher_code")
        private String voucherCode;      // 凭证code

        @JsonProperty("voucher_status")
        private Integer voucherStatus;  // 凭证状态

        @JsonProperty("pay_amount")
        private Long payAmount;          // 支付金额(分)

        @JsonProperty("biz_id")
        private String bizId;            // 业务ID
    }

    @Data
    public static class BookDetail {
        @JsonProperty("book_id")
        private String bookId;           // 小红书预约id

        @JsonProperty("voucher_code")
        private String voucherCode;      // 预约的凭证code

        @JsonProperty("book_status")
        private Integer bookStatus;      // 预约状态
    }

    @Data
    public static class ProductInfo {
        @JsonProperty("out_product_id")
        private String outProductId;    // 外部商品ID

        @JsonProperty("out_sku_id")
        private String outSkuId;        // 外部SKU ID
        private Integer num;              // 购买数量

        @JsonProperty("sale_price")
        private Long salePrice;          // 商品原价(分)

        @JsonProperty("real_price")
        private Long realPrice;          // 商品实付价(分)
        private String image;             // 商品图片

        @JsonProperty("discount_infos")
        private List<DiscountInfo> discountInfos; // 优惠信息
    }

    @Data
    public static class DiscountInfo {
        private String name;              // 费用项名称
        private Long price;               // 费用金额(分)
        private Integer num;              // 项目数量
    }
}
